# 7.1写出下列程序的执行结果
jack = {'id':'10000','name':'Jack Ma','gender':'male','age':47,'title':'CEO'}
print(jack["name"])
print(jack.get("salary",100000))
# 执行结果
# Jack Ma
# 100000

# 7.2写出下列程序的执行结果
phoneBook = {'Alex':'6551-2002','Betty':'6512-7252','Dora':'6546-2708'}
phoneBook2 = phoneBook
phoneBook2['Betty'] = '1111-2222'
print(phoneBook['Betty'])
print(phoneBook2['Betty'])
# 执行结果
# 1111-2222
# 1111-2222

# 7.3写出下述程序的执行结果
stu = {"name":"Eric Zhang","english":80,"Python":90,"math":100}
print(len(stu))
print(stu["english"])
print(list(stu.keys()))
print("math"in stu)
print(stu["math"] + 10)
print(stu["math"])
print(list(stu.items())[1])
print(list(stu.values())[2])
# 执行结果
# 4
# 80
# ['name', 'english', 'Python', 'math']
# True
# 110
# 100
# ('english', 80)
# 90
# 7.4写出下述程序的执行结果
s1 = "ABCCCCBB"
counts = {}
for x in s1:
    counts[x] = counts.get(x,0) + 1
lst = list(counts.items())
lst.sort(key=lambda x:x[1],reverse=True)
for i in range(len(lst)):
    print("{}出现{}次".format(lst[i][0],lst[i][1]))
# 执行结果
# C出现4次
# B出现3次
# A出现1次

# 7.5存出张三成绩的字典结构如下
# stu = {"name":"张三","english":80,"python":90,"math":100}
# 1请使用上述结构输入5个学生的name及english,python和math3门课的成绩并存储到列表scores中
# 2按照每位成员的平均成绩，同时在字典中添加关键字“avg”用来表示平均成绩
# 3按照每个成绩的平均成绩由高到低排序输出5个学生的相关信息

# 初始化存储学生成绩的列表
scores = []
# 输入5个学生的成绩并存储到列表scores中
for i in range(5):
    student_name = input(f"请输入第{i + 1}个学生的姓名: ")
    english_score = float(input(f"请输入{student_name}的英语成绩: "))
    python_score = float(input(f"请输入{student_name}的Python成绩: "))
    math_score = float(input(f"请输入{student_name}的数学成绩: "))
    # 将学生成绩以字典形式存储
    student = {"name": student_name, "english": english_score, "python": python_score, "math": math_score}
    # 计算平均成绩并添加到字典中
    student["avg"] = (english_score + python_score + math_score) / 3
    # 将学生字典添加到列表中
    scores.append(student)
# 按照平均成绩由高到低排序
scores.sort(key=lambda x: x["avg"], reverse=True)
# 输出5个学生的相关信息
for student in scores:
    print(
        f"学生姓名: {student['name']}, 英语成绩: {student['english']}, Python成绩: {student['python']}, 数学成绩: {student['math']}, 平均成绩: {student['avg']:.2f}")

# 7.6 编写一个未指定个数的字符串，找出出现次数最多的字符串并打印其出现次数。
word_counts = {}
# 输入未指定个数的字符串（这里为了示例仍然使用5次循环，但你可以根据需要调整）
for i in range(5):
    word = input()  # 直接输入字符串，不需要将其放入列表
    if word in word_counts:
        word_counts[word] += 1
    else:
        word_counts[word] = 1
# 找出出现次数最多的字符串及其次数
max_count = 0
most_common_word = ""
for word, count in word_counts.items():
    if count > max_count:
        max_count = count
        most_common_word = word
# 打印出现次数最多的字符串及其次数
print(f"The most common word is '{most_common_word}' with {max_count} occurrences.")